using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Entidades;

namespace Datos
{
    public class OrigenD
    {
        DBAccess dba;

    #region CONSTRUCTOR
        public OrigenD()
        { 
            this.dba = new DBAccess();
        }
    #endregion

    #region CONSULTAR
        public DataTable OrigenConsultar(OrigenE origen)
        {
            try
            {
                origen.Preparar();
                dba.Parametros.Clear();

                CargarParametros(origen);

                return dba.ExecuteDataTable("OrigenConsultar");
            }
            catch (Exception ex)
            {   
                throw ex;
            }
        }

        public DataTable OrigenConsultar()
        {
            try
            {
                OrigenE origen = new OrigenE();
                origen.Clear();

                return this.OrigenConsultar(origen);
            }
            catch (Exception)
            {                
                throw;
            }
        }

        public OrigenE OrigenConsultar(Int32 id)
        {
            try
            {
                OrigenE origen = new OrigenE();
                origen.Origen = id;
                DataTable dt = this.OrigenConsultar(origen);

                origen = new OrigenE(dt.Rows[0]);

                return origen;
            }
            catch (Exception)
            {
                throw;
            }
        }
    #endregion

    #region INSERTAR
        public void OrigenInsertar(OrigenE origen)
        {
            try
            {
                this.dba.Parametros.Clear();
                this.dba.Parametros.Add("@descripcion", origen.Descripcion);

                this.dba.ExecuteNonQuery("OrigenInsertar");
            }
            catch (Exception)
            {
                throw;
            }
        }
    #endregion

    #region MODIFICAR
        public void OrigenModificar(OrigenE origen)
        {
            try
            {
                dba.Parametros.Clear();
                CargarParametros(origen);
                dba.ExecuteNonQuery("OrigenModificar");
            }
            catch (Exception)
            {
                throw;
            }
        }
    #endregion

    #region BORRAR
        public void OrigenEliminar(OrigenE origen)
        {
            try
            {
                dba.Parametros.Clear();
                //CargarParametros(origen);
                this.dba.Parametros.Add("@idOrigen", origen.Origen);                
                dba.ExecuteNonQuery("OrigenEliminar");            
            }
            catch (Exception)
            {
                throw;
            }
        }
    #endregion

    #region METODOS
        private void CargarParametros(OrigenE origen)
        {
            try
            {
                this.dba.Parametros.Add("@idOrigen", origen.Origen);
                this.dba.Parametros.Add("@descripcion", origen.Descripcion);
            }
            catch (Exception)
            {
                throw;
            }
        }

        public Boolean ExisteId(String id)
        {
            try
            {
                dba.Parametros.Clear();
                dba.Parametros.Add("@idOrigen", id);
                DataTable dt = dba.ExecuteDataTable("OrigenConsultar");
                if (dt.Rows.Count != 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
    #endregion    
    
    }
}
